<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------

namespace app\business\admin;

use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use app\business\model\Brand as BrandModel;
use think\Db;

/**
 * 菜单控制器
 * @package app\cms\admin
 */
class Brand extends Admin
{
    /**
     * 菜单列表
     * @param null $id 导航id
     * @author 蔡伟明 <314013107@qq.com>
     * @return mixed
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    var $typearr=['1'=>'教育','2'=>'健身旅游','3'=>'美食唱歌','4'=>'按摩保健'];
    
    public function index()
    {
        cookie('__forward__', $_SERVER['REQUEST_URI']);
        // 查询
        $map = $this->getMap();
        $list_rows1 = input('list_rows');
        $listRows = isset($list_rows1)?$list_rows1:10;
        if ($this->request->isPost()) {
            $data = $this->request->post();
        }
        
        // 获取排序
        $order = $this->getOrder();
        if(empty($order)){
            $order='brand_id desc';
        }

        $data_list = BrandModel::where($map)->order($order)->paginate()
                    ->each( function($item, $key){
                        if(is_numeric($item->logo)){
                            $logourl=db('admin_attachment')->where('id',$item->logo)->value('path');     
                            $item->logo=(!empty($logourl))?'/'.$logourl:'';
                        }    
                    });
                
        return   ZBuilder::make('table')
        ->setPageTitle('品牌列表') // 设置页面标题
        ->setTableName('brand') // 设置数据表名
        ->addOrder('brand_id') // 添加排序
        ->addFilterList('maxtype',$this->typearr)
        ->addFilterList('xieyi_chk',['0'=>'未上传','1'=>'等待审核','2'=>'审核通过','4'=>'审核不通过'])
        ->addFilterList('info_status',['0'=>'未开始','1'=>'完成待提交','2'=>'审核通过','4'=>'拒绝'])
        ->setSearch(['brand_name' => '品牌名称','admin_mobile' => '管理员手机号码','admin_name' => '管理员名称',]) // 设置搜索参数
        ->addColumns([ // 批量添加列
            ['brand_id', '品牌ID'],
            ['maxtype','品牌类目','callback',function($v){
                return $this->typearr[$v];
            }],
            ['logo','品牌LOGO','callback',function($v){
                return '<img src="'.$v.'" style="width:100px;height:100px;"/>';
            }],
            ['admin_name','管理员名称'],
            ['admin_mobile','管理员手机'],
            ['xieyi_chk','协议审核状态','callback',function($v){
                $sarr=['0'=>'未上传','1'=>'等待审核','2'=>'审核通过','4'=>'审核不通过'];
                return $sarr[$v];
            }],
            ['info_status','资料提交状态','callback',function($v){
                $sarr=['0'=>'未开始','1'=>'完成待提交','2'=>'审核通过','4'=>'拒绝'];
                return $sarr[$v];
            }],
            ['status','展示状态','switch'],
            
            ['right_button', '操作', 'btn']
        ])
        ->setPrimaryKey('brand_id')
        ->setColumnWidth('id', 80)
        ->setColumnWidth('maxtype,admin_mobile,admin_name,xieyi_chk,info_status', 120)
        ->setColumnWidth('logo', 150)
        ->addTopButtons('add,enable,disable,delete') // 批量添加顶部按钮
        ->addRightButtons('edit,delete') // 批量添加右侧按钮
        ->setRowList($data_list) // 设置表格数据
        ->fetch(); // 渲染页面
    }
    
    
   /**
    * 新增
    */
    public function add(){
        // 保存数据
        if ($this->request->isPost()) {
            $data = $this->request->post();
            // 验证
            $result = $this->validate($data, 'Brand.add');
            // 验证失败 输出错误信息
            if(true !== $result) $this->error($result);
            
            $data['goods_id']='1';
            $data['o_id']='1000';
            $data['status']='0';
            
            if ($info = BrandModel::create($data)) {
                // 记录行为
                action_log('brand_add', 'business', $info['id'], UID,'管理员执行了添加品牌的操作!');
                
                $this->success('新增成功', url('index'));
            } else {
                $this->error('新增失败');
            }
        }
        
        $bdarr=db('admin_user')->where('role','3')->column('nickname','id');    //得到DB专员数据
        
        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
        ->setPageTitle('新增') // 设置页面标题
        ->addFormItems([ // 批量添加表单项
            ['select', 'maxtype', '品牌类型(必填)', '必选，请选择品牌类型',$this->typearr],
            ['text', 'brand_name', '品牌名称(必填)', '必填，可由英文字母、数字、中文组成'],
            ['text', 'admin_name', '管理员名称(必填)', '必填，可由英文字母、数字、中文组成'],
            ['text', 'admin_mobile', '管理员手机(必填)', '必填，由11位数字组成'],
            ['select', 'bd_id', 'BD专员(必填)', '必填，请选择BD专员',$bdarr],
            ['file','xieyi','协议PDF文件(必填)','必填，大小不能超过500MB的PDF文件','','512000','pdf'],
            
            ['radio', 'bd_confirm', 'BD录入完成', '', ['0'=>'未完成', '1'=>'已完成'], 0],
            ['radio', 'chushi', '初始化状态', '', ['0'=>'未初始化', '1'=>'已初始化'], 0],
            ['files','xieyi_upload','协议上传','大小不能超过500MB的jpg,jpeg,png图片','','512000','jpg,jpeg,png'],
            
            ['radio', 'xieyi_chk', '协议状态', '', ['0'=>'未上传', '1'=>'等待审核','2'=>'审核通过','4'=>'审核不通过'], 0],
            ['radio', 'info_status', '资料状态', '', ['0'=>'未开始', '1'=>'完成等待提交','2'=>'审核通过','4'=>'拒绝，修改后重新提交'], 0],
            
            ['image', 'logo', '品牌LOGO(必填)', '必填，不能为空'],
            ['textarea','description','品牌简介'],          
            ['text', 'slogan', '口号slogan', ''],
            
            ['file','video','视频','大小不能超过500MB的MP4格式视频','','512000','MP4'],
            ['image','video_pic','视频截图','大小不能超过500MB的jpg,jpeg,png图片','','512000','jpg,jpeg,png'],
            
            ['ueditor', 'content', '详情', '',''],
            ['ueditor', 'advantage', '我们的优势', '',''],
            ['text', 'filepath', '静态化路径', ''],
            ['radio', 'status', '品牌展示状态', '', ['1'=>'开启','0'=>'禁用'], 1]
        ])
        ->fetch();
    }
    
    /**
     * 编辑广告
     */
    public function edit($id=null){
        if ($id === null) $this->error('缺少参数');
        
        // 保存数据
        if ($this->request->isPost()) {
            $data = $this->request->post();
            // 验证
            $result = $this->validate($data, 'Brand.edit');
            // 验证失败 输出错误信息
            if(true !== $result) $this->error($result);
            
            if (BrandModel::update($data,['brand_id'=>$data['brand_id']])) {
                // 记录行为
                action_log('brand_edit', 'business', $data['brand_id'], UID,'管理员执行了修改品牌的操作!');
                
                $this->success('修改成功', url('index'));
            } else {
                $this->error('修改失败');
            }
        }
        
        // 获取数据
        $info = BrandModel::where('brand_id', $id)->find();
        $bdarr=db('admin_user')->where('role','3')->column('nickname','id');    //得到DB专员数据
        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
        ->setPageTitle('编辑') // 设置页面标题
        ->addFormItems([ // 批量添加表单项
            ['hidden','brand_id'],
            ['select', 'maxtype', '品牌类型(必填)', '必选，请选择品牌类型',$this->typearr],
            ['text', 'brand_name', '品牌名称(必填)', '必填，可由英文字母、数字、中文组成'],
            ['text', 'admin_name', '管理员名称(必填)', '必填，可由英文字母、数字、中文组成'],
            ['text', 'admin_mobile', '管理员手机(必填)', '必填，由11位数字组成'],
            ['select', 'bd_id', 'BD专员(必填)', '必填，请选择BD专员',$bdarr],
            ['file','xieyi','协议PDF文件(必填)','必填，大小不能超过500MB的PDF文件','','512000','pdf'],
            
            ['radio', 'bd_confirm', 'BD录入完成', '', ['0'=>'未完成', '1'=>'已完成'], 0],
            ['radio', 'chushi', '初始化状态', '', ['0'=>'未初始化', '1'=>'已初始化'], 0],
            ['files','xieyi_upload','协议上传','大小不能超过500MB的jpg,jpeg,png图片','','512000','jpg,jpeg,png'],
            
            ['radio', 'xieyi_chk', '协议状态', '', ['0'=>'未上传', '1'=>'等待审核','2'=>'审核通过','4'=>'审核不通过'], 0],
            ['radio', 'info_status', '资料状态', '', ['0'=>'未开始', '1'=>'完成等待提交','2'=>'审核通过','4'=>'拒绝，修改后重新提交'], 0],
            
            ['image', 'logo', '品牌LOGO(必填)', '必填，不能为空'],
            ['textarea','description','品牌简介'],
            ['text', 'slogan', '口号slogan', ''],
            
            ['file','video','视频','大小不能超过500MB的MP4格式视频','','512000','MP4'],
            ['image','video_pic','视频截图','大小不能超过500MB的jpg,jpeg,png图片','','512000','jpg,jpeg,png'],
            
            ['ueditor', 'content', '详情', '',''],
            ['ueditor', 'advantage', '我们的优势', '',''],
            ['text', 'filepath', '静态化路径', ''],
            ['radio', 'status', '品牌展示状态', '', ['1'=>'开启','0'=>'禁用'], 1]
        ])
        ->setFormData($info) // 设置表单数据
        ->fetch();
    }
    
    /**
     * 快速编辑
     */
    public function quickedit($record = []){
        if ($this->request->isPost()) {
            $data = $this->request->post();
            if(!UID){
                $this->error('禁止操作当前账号');
            }
            $id      = trim($data['pk']);
            $field   = trim($data['name']);
            $value   = (isset($data['value']) && trim($data['value'])=='true')?'1':'0';
            BrandModel::where('brand_id', $id)->update([$field=>$value]);       //修改用户冻结信息
            
            // 记录行为
            $djstatus=($value)?'冻结':'正常';
            action_log('brand_quickedit', 'business', $id, UID, $id.'的展示状态改为'.$djstatus);
            $this->success('编辑成功', cookie('__forward__'));
        }
    }
    
    /**
     * 删除用户
     * @param array $ids 用户id
     * @author 蔡伟明 <314013107@qq.com>
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function delete($ids = [])
    {
        return $this->setStatus('delete');
    }
    
    /**
     * 启用用户
     * @param array $ids 用户id
     * @author 蔡伟明 <314013107@qq.com>
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function enable($ids = [])
    {
        return $this->setStatus('enable');
    }
    
    /**
     * 禁用用户
     * @param array $ids 用户id
     * @author 蔡伟明 <314013107@qq.com>
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function disable($ids = [])
    {
        return $this->setStatus('disable');
    }
    
    /**
     * 设置用户状态：删除、禁用、启用
     * @param string $type 类型：delete/enable/disable
     * @param array $record
     * @author 蔡伟明 <314013107@qq.com>
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function setStatus($type = '', $record = [])
    {
        $ids        = $this->request->isPost() ? input('post.ids/a') : input('param.ids');
        $uid_delete = is_array($ids) ? '' : $ids;
        $ids        = array_map('get_nickname', (array)$ids);
        return parent::setStatus($type, ['advert_'.$type, 'develop', $uid_delete, UID, implode('、', $ids)]);
    }

}